package com.yungu.swift.base.model.config;

import java.io.Serializable;
import java.util.List;

/**
 * 司机端配置
 *
 * @author : cuixiuyin
 * @date : 2019/9/11
 */
public class DriverConfig implements Serializable {

    /**
     * 通用
     */
    private CommonBean common;
    /**
     * 登陆
     */
    private LoginBean login;
    /**
     * 财务
     */
    private DriverPayBean driverPay;
    /**
     * 热力图
     */
    private HomeBean home;
    /**
     * 侧边栏
     */
    private SidebarBean sidebar;
    /**
     * 订单配置
     */
    private OrderBean order;

    public CommonBean getCommon() {
        return common;
    }

    public void setCommon(CommonBean common) {
        this.common = common;
    }

    public LoginBean getLogin() {
        return login;
    }

    public void setLogin(LoginBean login) {
        this.login = login;
    }

    public DriverPayBean getDriverPay() {
        return driverPay;
    }

    public void setDriverPay(DriverPayBean driverPay) {
        this.driverPay = driverPay;
    }

    public HomeBean getHome() {
        return home;
    }

    public void setHome(HomeBean home) {
        this.home = home;
    }

    public SidebarBean getSidebar() {
        return sidebar;
    }

    public void setSidebar(SidebarBean sidebar) {
        this.sidebar = sidebar;
    }

    public OrderBean getOrder() {
        return order;
    }

    public void setOrder(OrderBean order) {
        this.order = order;
    }

    public static class CommonBean {
        /**
         * screenshots : true 截屏开关
         * faceRecognition : {"special":{"login":false,"depart":false,"resetPassword":false,"duration":21},"express":{"login":false,"depart":false,"resetPassword":false,"duration":21},"taxi":{"login":false,"depart":false,"resetPassword":false,"duration":21},"join":{"login":false,"depart":false,"resetPassword":false,"duration":1}}
         */

        private boolean screenshots;
        private FaceRecognitionBean faceRecognition;
        private boolean privacyPolicy;

        public boolean getScreenshots() {
            return screenshots;
        }

        public void setScreenshots(boolean screenshots) {
            this.screenshots = screenshots;
        }

        public FaceRecognitionBean getFaceRecognition() {
            return faceRecognition;
        }

        public void setFaceRecognition(FaceRecognitionBean faceRecognition) {
            this.faceRecognition = faceRecognition;
        }

        public boolean isScreenshots() {
            return screenshots;
        }

        public boolean isPrivacyPolicy() {
            return privacyPolicy;
        }

        public void setPrivacyPolicy(boolean privacyPolicy) {
            this.privacyPolicy = privacyPolicy;
        }

        public static class FaceRecognitionBean {
            /**
             * special : {"login":false,"depart":false,"resetPassword":false,"duration":21}
             * express : {"login":false,"depart":false,"resetPassword":false,"duration":21}
             * taxi : {"login":false,"depart":false,"resetPassword":false,"duration":21}
             * join : {"login":false,"depart":false,"resetPassword":false,"duration":1}
             */

            private FaceBean special;
            private FaceBean express;
            private FaceBean taxi;
            private FaceBean join;

            public FaceBean getSpecial() {
                return special;
            }

            public void setSpecial(FaceBean special) {
                this.special = special;
            }

            public FaceBean getExpress() {
                return express;
            }

            public void setExpress(FaceBean express) {
                this.express = express;
            }

            public FaceBean getTaxi() {
                return taxi;
            }

            public void setTaxi(FaceBean taxi) {
                this.taxi = taxi;
            }

            public FaceBean getJoin() {
                return join;
            }

            public void setJoin(FaceBean join) {
                this.join = join;
            }

            public static class FaceBean {
                /**
                 * login : false 登陆人脸识别
                 * depart : false 出车人脸识别
                 * resetPassword : false 重置密码人脸识别
                 * duration : 21 人脸识别失效时间
                 */

                private boolean login;
                private boolean depart;
                private boolean resetPassword;
                private int duration;

                public boolean getLogin() {
                    return login;
                }

                public void setLogin(boolean login) {
                    this.login = login;
                }

                public boolean getDepart() {
                    return depart;
                }

                public void setDepart(boolean depart) {
                    this.depart = depart;
                }

                public boolean getResetPassword() {
                    return resetPassword;
                }

                public void setResetPassword(boolean resetPassword) {
                    this.resetPassword = resetPassword;
                }

                public int getDuration() {
                    return duration;
                }

                public void setDuration(int duration) {
                    this.duration = duration;
                }
            }
        }
    }

    public static class LoginBean {
        /**
         * pwdComplexity : false 密码复杂度
         * driverRegister : false 司机申请
         * driverRegisterType : ["4","1","2","3"] 司机可申请类型
         */

        private boolean pwdComplexity;
        private boolean driverRegister;
        private List<String> driverRegisterType;

        public boolean getPwdComplexity() {
            return pwdComplexity;
        }

        public void setPwdComplexity(boolean pwdComplexity) {
            this.pwdComplexity = pwdComplexity;
        }

        public boolean getDriverRegister() {
            return driverRegister;
        }

        public void setDriverRegister(boolean driverRegister) {
            this.driverRegister = driverRegister;
        }

        public List<String> getDriverRegisterType() {
            return driverRegisterType;
        }

        public void setDriverRegisterType(List<String> driverRegisterType) {
            this.driverRegisterType = driverRegisterType;
        }
    }

    public static class DriverPayBean {
        /**
         * special : {"on":false,"channel":[1,3,2]}
         * express : {"on":true,"channel":[1,2]}
         * taxi : {"on":true,"channel":[1,3]}
         * join : {"on":true,"payPattern":true,"channel":[1,3,2]}
         */

        private PayBean special;
        private PayBean express;
        private PayBean taxi;
        private PayBean join;

        public PayBean getSpecial() {
            return special;
        }

        public void setSpecial(PayBean special) {
            this.special = special;
        }

        public PayBean getExpress() {
            return express;
        }

        public void setExpress(PayBean express) {
            this.express = express;
        }

        public PayBean getTaxi() {
            return taxi;
        }

        public void setTaxi(PayBean taxi) {
            this.taxi = taxi;
        }

        public PayBean getJoin() {
            return join;
        }

        public void setJoin(PayBean join) {
            this.join = join;
        }

        public static class PayBean {
            /**
             * on : false 是否允许代付
             * payPattern: false  后付费开关 false 先付费 ，true 后付费
             * channel : [1,3,2] 代付渠道
             */
            private boolean on;
            private boolean payPattern;
            private List<Integer> channel;

            public boolean getOn() {
                return on;
            }

            public void setOn(boolean on) {
                this.on = on;
            }

            public boolean getPayPattern() {
                return payPattern;
            }

            public void setPayPattern(boolean payPattern) {
                this.payPattern = payPattern;
            }

            public List<Integer> getChannel() {
                return channel;
            }

            public void setChannel(List<Integer> channel) {
                this.channel = channel;
            }
        }
    }

    public static class HomeBean {
        /**
         * heatMap : {"all":{"on":true,"range":5,"interval":20},"special":{"on":true,"range":4,"interval":12},"express":{"on":true,"range":4,"interval":14},"taxi":{"on":true,"range":1,"interval":11}}
         */

        private HeatMapBean heatMap;

        public HeatMapBean getHeatMap() {
            return heatMap;
        }

        public void setHeatMap(HeatMapBean heatMap) {
            this.heatMap = heatMap;
        }

        public static class HeatMapBean {
            /**
             * all : {"on":true,"range":5,"interval":20}
             * special : {"on":true,"range":4,"interval":12}
             * express : {"on":true,"range":4,"interval":14}
             * taxi : {"on":true,"range":1,"interval":11}
             */

            private HeatMap all;
            private HeatMap special;
            private HeatMap express;
            private HeatMap taxi;

            public HeatMap getAll() {
                return all;
            }

            public void setAll(HeatMap all) {
                this.all = all;
            }

            public HeatMap getSpecial() {
                return special;
            }

            public void setSpecial(HeatMap special) {
                this.special = special;
            }

            public HeatMap getExpress() {
                return express;
            }

            public void setExpress(HeatMap express) {
                this.express = express;
            }

            public HeatMap getTaxi() {
                return taxi;
            }

            public void setTaxi(HeatMap taxi) {
                this.taxi = taxi;
            }

            public static class HeatMap {
                /**
                 * on : true 热力图开关
                 * range : 5 范围 -公里
                 * interval : 20 间隔 -分钟
                 */

                private boolean on;
                private int range;
                private int interval;

                public boolean getOn() {
                    return on;
                }

                public void setOn(boolean on) {
                    this.on = on;
                }

                public int getRange() {
                    return range;
                }

                public void setRange(int range) {
                    this.range = range;
                }

                public int getInterval() {
                    return interval;
                }

                public void setInterval(int interval) {
                    this.interval = interval;
                }
            }
        }
    }

    public static class SidebarBean {
        /**
         * special : {"invitePassenger":0,"driverWithdrawal":true,"withdrawalPeriod":[2,3,5,4,7,6]}
         * express : {"invitePassenger":0,"driverWithdrawal":false,"withdrawalPeriod":[2,5,1,4,7,6]}
         * taxi : {"invitePassenger":1,"driverWithdrawal":false,"withdrawalPeriod":[2,5,1,4,7,6,3]}
         * join : {"invitePassenger":1,"driverWithdrawal":true,"withdrawalPeriod":[2,5,1,4,7,6,3]}
         */

        private Sidebar special;
        private Sidebar express;
        private Sidebar taxi;
        private Sidebar join;

        public Sidebar getSpecial() {
            return special;
        }

        public void setSpecial(Sidebar special) {
            this.special = special;
        }

        public Sidebar getExpress() {
            return express;
        }

        public void setExpress(Sidebar express) {
            this.express = express;
        }

        public Sidebar getTaxi() {
            return taxi;
        }

        public void setTaxi(Sidebar taxi) {
            this.taxi = taxi;
        }

        public Sidebar getJoin() {
            return join;
        }

        public void setJoin(Sidebar join) {
            this.join = join;
        }

        public static class Sidebar {
            /**
             * invitePassenger : 0 邀请乘客
             * driverWithdrawal : true 司机提现
             * withdrawalPeriod : [2,3,5,4,7,6] 司机可提现业务
             */

            private int invitePassenger;
            private boolean driverWithdrawal;
            private List<Integer> withdrawalPeriod;

            public int getInvitePassenger() {
                return invitePassenger;
            }

            public void setInvitePassenger(int invitePassenger) {
                this.invitePassenger = invitePassenger;
            }

            public boolean getDriverWithdrawal() {
                return driverWithdrawal;
            }

            public void setDriverWithdrawal(boolean driverWithdrawal) {
                this.driverWithdrawal = driverWithdrawal;
            }

            public List<Integer> getWithdrawalPeriod() {
                return withdrawalPeriod;
            }

            public void setWithdrawalPeriod(List<Integer> withdrawalPeriod) {
                this.withdrawalPeriod = withdrawalPeriod;
            }
        }
    }

    /**
     * 订单相关配置
     */
    public static class OrderBean {

        private RemindTypeBean remindType;

        public RemindTypeBean getRemindType() {
            return remindType;
        }

        public void setRemindType(RemindTypeBean remindType) {
            this.remindType = remindType;
        }

        public static class RemindTypeBean {
            /**
             * 听单模式配置
             */
            private RemindTypeItmeBean special;
            private RemindTypeItmeBean express;
            private RemindTypeItmeBean taxi;
            private RemindTypeItmeBean join;

            public RemindTypeItmeBean getSpecial() {
                return special;
            }

            public void setSpecial(RemindTypeItmeBean special) {
                this.special = special;
            }

            public RemindTypeItmeBean getExpress() {
                return express;
            }

            public void setExpress(RemindTypeItmeBean express) {
                this.express = express;
            }

            public RemindTypeItmeBean getTaxi() {
                return taxi;
            }

            public void setTaxi(RemindTypeItmeBean taxi) {
                this.taxi = taxi;
            }

            public RemindTypeItmeBean getJoin() {
                return join;
            }

            public void setJoin(RemindTypeItmeBean join) {
                this.join = join;
            }

            /**
             * 听单模式配置
             */
            public static class RemindTypeItmeBean {

                /**
                 * 不接火车站订单移动端展示开关 true 开 false  关
                 */
                private boolean rejectStationOrder;

                /**
                 * 顺路模式移动端展示开关
                 */
                private boolean sameWayModel;

                /**
                 * 顺路距离限制
                 */
                private Double sameWayDistance;

                /**
                 * 顺路订单可接次数限制
                 */
                private int sameWayOrderCount;

                /**
                 * 顺路地址修改数量限制
                 */
                private int sameWayEditAddressCount;

                public boolean isRejectStationOrder() {
                    return rejectStationOrder;
                }

                public void setRejectStationOrder(boolean rejectStationOrder) {
                    this.rejectStationOrder = rejectStationOrder;
                }

                public boolean isSameWayModel() {
                    return sameWayModel;
                }

                public void setSameWayModel(boolean sameWayModel) {
                    this.sameWayModel = sameWayModel;
                }

                public Double getSameWayDistance() {
                    return sameWayDistance;
                }

                public void setSameWayDistance(Double sameWayDistance) {
                    this.sameWayDistance = sameWayDistance;
                }

                public int getSameWayOrderCount() {
                    return sameWayOrderCount;
                }

                public void setSameWayOrderCount(int sameWayOrderCount) {
                    this.sameWayOrderCount = sameWayOrderCount;
                }

                public int getSameWayEditAddressCount() {
                    return sameWayEditAddressCount;
                }

                public void setSameWayEditAddressCount(int sameWayEditAddressCount) {
                    this.sameWayEditAddressCount = sameWayEditAddressCount;
                }
            }
        }

    }
}
